//------------------------------------------------------------------------------
//	OBJ_SHOT֐(߂lƂăIuWFNglA܂)
//	@X		exW
//	@Y		eyW
//	@Speed		x
//	@Angle		px
//	@Graph		摜
//	@Delay		xt[
//------------------------------------------------------------------------------
function CreateObjShot(X,Y,Speed,Angle,Graph,Delay){
	let obj = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,X,Y);
	Obj_SetSpeed(obj,Speed);
	Obj_SetAngle(obj,Angle);
	ObjShot_SetGraphic(obj,Graph);
	ObjShot_SetDelay(obj,Delay);
	
	return obj;
}

//------------------------------------------------------------------------------
//	ˏopOBJ_LASER֐(߂lƂăIuWFNglA܂)
//	@X		exW
//	@Y		eyW
//	@Speed		x
//	@Angle		px
//	@Graph		摜
//	@Delay		xt[
//	@Lng		
//	@Wid		
//	@Src		̗L
//------------------------------------------------------------------------------
function CreateObjLaserA(X,Y,Speed,Angle,Graph,Delay,Lng,Wid,Src){
	let obj = Obj_Create(OBJ_LASER);
	Obj_SetPosition(obj,X,Y);
	Obj_SetSpeed(obj,Speed);
	Obj_SetAngle(obj,Angle);
	ObjShot_SetGraphic(obj,Graph);
	ObjShot_SetDelay(obj,Delay);
	
	ObjLaser_SetLength(obj,0);
	ObjLaser_SetWidth(obj,Wid);
	ObjLaser_SetSource(obj,Src);
	
	CreateObjLaserTask(obj,X,Y,Speed,Angle,Graph,Delay,Lng,Wid,Src);
	
	return obj;
}

task CreateObjLaserTask(Obj,X,Y,Speed,Angle,Graph,Delay,Lng,Wid,Src){
	let vLng = 0;
	let mx = Speed * cos(Angle);
	let my = Speed * sin(Angle);
	
	loop(Delay){
		yield;
	}
	
	loop( truncate( Lng / Speed ) ){
		ObjLaser_SetLength(Obj,vLng);
		vLng += Speed;
		yield;
	}
	
	while( !Obj_BeDeleted(Obj) ){
		Obj_SetX( Obj , Obj_GetX(Obj) + mx );
		Obj_SetY( Obj , Obj_GetY(Obj) + my );
		
		yield;
	}
}

//------------------------------------------------------------------------------
//	ݒupOBJ_LASER֐(߂lƂăIuWFNglA܂)
//	@X		exW
//	@Y		eyW
//	@Speed		x
//	@Angle		px
//	@Graph		摜
//	@Delay		xt[
//	@Lng		
//	@Wid		
//	@Src		̗L
//------------------------------------------------------------------------------
function CreateObjLaserB(X,Y,Speed,Angle,Graph,Delay,Lng,Wid,Src){
	let obj = Obj_Create(OBJ_LASER);
	Obj_SetPosition(obj,X,Y);
	Obj_SetSpeed(obj,Speed);
	Obj_SetAngle(obj,Angle);
	ObjShot_SetGraphic(obj,Graph);
	ObjShot_SetDelay(obj,Delay);
	
	ObjLaser_SetLength(obj,Lng);
	ObjLaser_SetWidth(obj,Wid);
	ObjLaser_SetSource(obj,Src);
	
	return obj;
}

//------------------------------------------------------------------------------
//	OBJ_EFFECT֐(߂lƂăIuWFNglA܂)
//	@EffectImg	摜
//	@X		SxW
//	@Y		SyW
//	@CutX		؂o_xl
//	@CutY		؂o_yl
//	@ImgX		摜X
//	@ImgY		摜Y
//	@Layer		\C[
//	@Alpha		l
//	@R		Rl
//	@G		Gl
//	@B		Bl
//------------------------------------------------------------------------------
function CreateObjEffect(EffectImg,X,Y,CutX,CutY,ImgX,ImgY,Layer,Alpha,R,G,B){
	let ImgXHalf = ImgX / 2;
	let ImgYHalf = ImgY / 2;
	
	let obj = Obj_Create(OBJ_EFFECT);
	ObjEffect_SetTexture(obj,EffectImg);
	ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_CreateVertex(obj,4);
	
	ObjEffect_SetVertexXY(obj, 0, -ImgXHalf, -ImgYHalf);
	ObjEffect_SetVertexXY(obj, 1, -ImgXHalf,  ImgYHalf);
	ObjEffect_SetVertexXY(obj, 2,  ImgXHalf, -ImgYHalf);
	ObjEffect_SetVertexXY(obj, 3,  ImgXHalf,  ImgYHalf);
	
	ObjEffect_SetVertexUV(obj, 0,        CutX,        CutY);
	ObjEffect_SetVertexUV(obj, 1,        CutX, CutY + ImgY);
	ObjEffect_SetVertexUV(obj, 2, CutX + ImgX,        CutY);
	ObjEffect_SetVertexUV(obj, 3, CutX + ImgX, CutY + ImgY);
	
	ObjEffect_SetVertexColor(obj,0,Alpha,R,G,B);
	ObjEffect_SetVertexColor(obj,1,Alpha,R,G,B);
	ObjEffect_SetVertexColor(obj,2,Alpha,R,G,B);
	ObjEffect_SetVertexColor(obj,3,Alpha,R,G,B);
	
	ObjEffect_SetLayer(obj,Layer);
	
	Obj_SetPosition(obj,X,Y);
	
	return obj;
}